第3回 Spring開発環境の整備
よく訓練されたアップル信者、都元です。大変お待たせいたしました。評判がそこそこ良いのは知っていたのですが、AWSネタに押し流されて放置してしまいました。ただ、私のSpring愛は衰えておりませんので、ぼちぼちと続きを書いて行きたいと思います。冷静に見ると5ヶ月も間を開けてしまいましたね。ごめんなさいごめんなさい。というわけで、下記をおさらいの上、読み進んでみてください。(私も読んでから書かないと流れが掴めませんw)
というわけで、前回までは、DIコンテナの考え方や、beanの定義方法 *1等について解説しました。手続き的な記述と宣言的な記述の分離など、思い出して頂けましたでしょうか。
さて今回はちょっと毛色を変えて、Springを使ったJava開発の開発環境についてご紹介します。
Java開発環境と言えば、最近IntelliJ IDEAの隆盛が目覚ましい限りですが、ワタクシ、IDEAの機能を解説できるほど使い込めておりません。IntelliJ IDEA派の方は、申し訳ありませんがこの辺りを見てください。まぁ多分IntelliJであれば特にインストール等何もせずに、上手い事Springに対応してくれると思います。
Eclipseプラグインの整備
というわけで、本エントリではEclipseをベースにした環境のご紹介になります。まずはEclipseをダウンロードしましょう。Eclipseダウンロードサイトから、Eclipse 4.3 (Kepler) ベースのもので、自分のプラットフォームに合ったもの(ここではMac OS X 64bitで検証しています)をダウンロードしてください。Eclipseには「Eclipse IDE for Java EE Developers」や「Eclipse IDE for Java Developers」等、本当に数多くのディストリビューションがあります *2。が、とりあえず「Eclipse Classic IDE for Java EE Developers」が無難 *3と覚えておいて頂ければと思います。
Spring Tool Suite (STS)の導入
メニューバーのHelpより「Eclipse Marketplace...」を開くと、プラグインの検索画面が出てきますので、「STS」で検索して下図のプラグインのInstallボタンを押しましょう。
次に現れるプラグインの詳細画面ですが、正直私も、どのプラグインがどの部分の機能を担っているのか、きちんと把握できていませんw ひとまず、下の方は今の所個人的に使う機会が全くないので、いつもこんな感じに選択しています。もっと用途が見えていれば、Springのどのコンポーネントを使うのかに応じて絞ると良いでしょう。まぁ全部選択しても大きな問題にはならないかもしれません。
あとはいつものようにインストールを進め、Eclipseの再起動まで終わらせましょう。
Gradle Integration for Eclipseの導入
えーと、Spring陣営はGroovy陣営と仲良しです。というわけで、ビルドツールにはGradleを使ってみましょう。というわけで、Eclipseに対してGradleのプラグインを導入します。同じようにMarketplaceを呼び出し、「Gradle」で検索します。
そしてプラグインの選択。そう、このプラグインもSpring陣営が開発したものです。さっき敢えてチェックを外したDashboardとUAAは、やっぱり今回も外してしまいます。
執筆時点で Gradle Integration for Eclipse プラグインのダウンロードサイトのパーミッション設定がどうやら一部おかしいようです。「install anyway?」と問われたら、Yesで強制インストールしてください。
その他プラグインの導入
どんどん話がSpringから逸れていきますが、あとはお好みでプラグインを投入しましょう。都元個人的には、以下のようなプラグインが好きです。
- EGit
- Path Tools
- FindBugs Eclipse Plugin
- Checkstyle Plug-in
- Quick JUnit
プロジェクトの作成
さて、諸々のインストールが終わったら、Gradleプロジェクトを作ってみましょう。
また、せっかくの連載なので、最終的に小さなプロダクトを1つ作れるような方向性に進めようと思います。写真共有サイトでも作りますか。プロジェクト名は「berserker」で(適当w)。スクショはpartyalbumとかなってますが、気の迷いです。
さて、プロジェクトを作るとこんな感じ。
build.gradleの調整
まずGradleのビルドファイルbuild.gradleをざっくり書き換えてしまいましょう。今時Java5とか無いですから。Java7でいきましょう。その他、以下をザックリとコピペで入れ替えてください。(各種ライブラリのバージョンが、エントリ投稿時の時代考証に合ってないのは気にしないでください!)
// -*- coding: utf-8; mode: groovy -*- apply plugin: "java" sourceCompatibility = 1.8 targetCompatibility = 1.8 tasks.withType(AbstractCompile) each { it.options.encoding = ext.defaultEncoding } // ======== libraries ======== repositories { mavenCentral() } dependencies { // spring compile "org.springframework:spring-context-support:$springVersion" // loggers compile "org.slf4j:slf4j-api:$slf4jVersion" compile "org.slf4j:jul-to-slf4j:$slf4jVersion" compile "ch.qos.logback:logback-classic:$logbackVersion" // other compile "org.projectlombok:lombok:$lombokVersion" compile "com.amazonaws:aws-java-sdk-sqs:$awsJavaSdkVersion" compile "javax.mail:mail:$javaMailVersion" // testing testCompile "junit:junit:$junitVersion" testCompile "org.hamcrest:hamcrest-library:$hamcrestVersion" testCompile "org.mockito:mockito-core:$mockitoCoreVersion" } // ======== wrapper ======== task wrapper(type: Wrapper) { gradleVersion = "2.12" }
やっていることは、コンパイラバージョンの設定、エンコーディングの設定、Springやlogger等の依存ライブラリ定義ってところです。とくに難しいことはしていませんね。
上記の通りbuild.gradleの書換えが終わったら、Eclipseに認識させます。プロジェクトのコンテキストメニューより、Gradle>Refresh Allを選びましょう。build.gradleを書き換えた時は、必要に応じてRefreshするのを忘れないようにしてください。
Refreshが終わると、コンパイルエラーが出ます。Gradleが生成したコードはcommons-collectionsに依存していたのですが、build.gradleから依存を外してしまったからですね。まぁ、要らないので自動生成のクラスとXMLは消してしまいましょう。
git導入
必要に応じてですが、とりあえずgit/git-flowを導入しておきましょうか。.gitignoreは以下のような感じ。
$ vi .gitignore .DS_Store /bin /target /build /.gradle /env/*.gradle /env/!_*.gradle *.iml /.idea
$ find . -type d -name .git -prune -o -type d -empty -exec touch {}/.gitkeep \; $ git init $ git add . $ git commit -m'Initial commit'
まとめ & 次回予告
さて、あまりSpringっぽいことはしませんでしたが、今回は環境の整備ということでお送りいたしました。どこまでいけるか分かりませんが、写真共有サイトが完成するといいですねー。(他人事)
次回はどうしようかな…。データアクセスまわりのお話かな。ということで、この環境にMySQLへのアクセス環境を作っていきます。
超適当に、3分でERを描いてみました。同じイベントに参加した人同士で写真をシェアする感じですね。ユーザ・イベント・参加・写真といったエンティティを定義しています。
Gradleについて詳しく知りたくなったら、ちょうど最新号のWEB+DB PRESSで記事が出ていますので、オススメです。
では、近々また!